package pruebas.testUtil;

import static org.junit.Assert.*;
import org.junit.*;
import modelo.util.ContadorSimple;
import modelo.util.ContadorStopException;

public class TestContadorSimple {
	private ContadorSimple contador;
	private int valorInicializacion;
	
	@Before
	public void setUp() throws Exception {
		valorInicializacion = 10;
		contador = new ContadorSimple(valorInicializacion);
	}
	
	@Test
	public void testGetValor() {
		//al inicializarlo el valor debe coincidir con el valor 
		//de inicializacion.
		assertEquals(contador.getValor(),valorInicializacion);
	}
	
	@Test (expected = ContadorStopException.class)
	public void testDescontar() {
		//descontar una vez
		contador.descontar();
		assertEquals(contador.getValor(),valorInicializacion-1);
		//descontar mas de valorInicializacion veces, debe levantar
		//una excepcion
		for(int i = 0; i < valorInicializacion; i++){
			contador.descontar();
		}
	}

	@Test
	public void testAgotado() {
		//al crearlo no debe estar agotado
		assertFalse(contador.agotado());
		//lugo si.
		contador.agotar();
		assertTrue(contador.agotado());
	}

	@Test
	public void testAgotar() {
		//al agotarse contador tiene el valor 0.
		contador.agotar();
		assertEquals(contador.getValor(),0);
	}

	

}
